草庐IT

CountDownLatch和ExecutorService 线程池cachedThreadPool.submit

全部标签

java - 如果它实际计算就不可能中断线程?

鉴于此代码...publicclassSimpleTest{@TestpublicvoidtestCompletableFuture()throwsException{Threadthread=newThread(SimpleTest::longOperation);thread.start();bearSleep(1);thread.interrupt();bearSleep(5);}publicstaticvoidlongOperation(){System.out.println("started");try{booleanb=true;while(true){b=!b;}}ca

JavaFX : After setting text in textArea, 在单独的线程中设置滚动到底部不起作用

我创建了一个JavaFX应用程序,我在其中使用一个后台进程更新日志。所以我在TextArea中设置日志文本并使用logs.setScrollTop(Double.MAX_VALUE)设置滚动到底部。但滚动条设置为从底部向上一点。我还尝试了ScrollPan中的TextFlow并使用logDisplay.setVvalue(1.0)设置滚动到底部。它也给出了相同的结果。Platform.runLater(()->{logs.setText([settinglogtext]);//TextArealogslogs.setScrollTop(Double.MAX_VALUE));});//F

java - 我如何测量有多少线程正在执行一段代码?

我正在尝试测量有多少线程同时执行一段代码。目前我正在(ab)为此使用信号量,有没有更好的方法?finalintMAX_THREADS=Integer.MAX_VALUE;Semaphores=newSemaphore(MAX_THREADS);s.acquire();//startofsection//dosomecomputations//trackhowmanythreadsarerunningthesectiontrackThreads((MAX_THREADS-s.availablePermits()));s.release();//endofsection

java - 为什么要恢复在线程池线程中运行的任务的中断标志

此片段来自JCIP(BrianGoetz)list6.15f.get()抛出InterruptedException和ExecutionException。现在,这些异常(exception)是特定于future的吗?意味着future所代表的特定任务被中断或有内部异常。问题-为什么我需要使用“Thread.currentThread().interrupt()”恢复中断?,因为我的任务运行的线程的中断标志不是吗?这有点令人困惑。为什么抛出launderThrowable异常?如果其中一个downloadImage有问题,我们不应该只处理其他下载的图像而不是从这里扔掉,从而“不”处理剩

java - 为什么 CountDownLatch.getCount() 返回一个 long 而不是一个 int?

我查看了代码,一切都是int--传递给CountDownLatch构造函数的参数是int,Sync中的变量是int,Sync.getCount()的返回类型是int。但是CountDownLatch.getCount()返回一个长?想知道为什么。 最佳答案 除非设计该API的人回答,否则我不知道您是否会找到该问题的充分答案,但它确实说它用于“调试和测试”。publiclonggetCount(){...}//justfordebuggingandtesting 关于java-为什么Cou

java - 线程创建监听器

java可以写线程创建监听器吗?例如使用aop?!我的意思是这样的,如果我的应用程序创建了一个线程,我想在我自己的表、容器或其他东西中注册这个对象。 最佳答案 我会创建一个线程,不断列出JVM上所有正在运行的线程。然后,每次它注意到出现了一个新线程时,它都会以任何一种方式通知您代码中的一个类。这里有一些关于如何列出当前在JVM上运行的所有线程的链接:GetaListofallThreadscurrentlyrunninginJavaListingAllRunningThreads============起始代码:ThreadCrea

java - Java 中的信号量和线程池

我不是很清楚Java中信号量的概念并试图理解它。我看了oracledocs(http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/Semaphore.html)和其他一些页面后的理解,它类似于锁计算许可数量。它通常用于创建资源池。在这里我感到困惑,还有ThreadPoolExecutor可以给我一个线程池。那么区别是什么呢?在什么场景下使用哪个? 最佳答案 首先,没有愚蠢的问题...Semaphore允许多个线程“获取”资源。他们应该检查资源是否可用。它就

java - ExecutorService.submit(<callable>) 需要更多时间?

我试图了解java.util.concurrent包中的实用程序,并了解到我们可以将callable对象提交给ExecutorService,在call()方法内成功完成任务后,返回Future,其中填充了callable返回的值。我了解到所有可调用项都是使用多个线程同时执行的。当我想看看ExecutorService对批处理任务执行有多大改进时,我想到了捕获时间。以下是我尝试执行的代码-packageconcurrency;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.Callabl

java - 在 ExecutorService 中跟踪已完成的任务

我正在用Java编写一个应用程序,它使用ExecutorService来运行多个线程。我希望将多个任务(一次数千个)作为Callables提交给Executor,并在完成后检索它们的结果。我处理这个问题的方法是每次调用submit()函数时,我都会得到一个存储在ArrayList中的Future。后来我将List传递给一个线程,该线程不断迭代它,调用future.get()函数并超时以查看任务是否完成。这是正确的方法还是效率太低?编辑---更多信息---另一个问题是每个Callable需要不同的处理时间。因此,如果我简单地从List中取出第一个元素并对其调用get(),它将阻塞,而其他

java - "private final Object"锁在java多线程中有什么用?

Java多线程中“privatefinalObject”锁定的用途是什么?就我的理解而言,我认为要使一个类成为线程安全的,我们应该在我们将所有方法标记为同步的地方使用内部锁定,然后使用“this”将它们锁定在对象的监视器上?或者我们可以用方法内部的私有(private)最终对象锁替换在类的“this”上标记为同步的方法,以锁定通用对象锁以使其线程安全?例如使用内部锁定的代码:publicclassCounter{//Locksontheobject'smonitorpublicsynchronizedvoidchangeValue(){//...}我们可以用下面的外部锁替换上面的代码: